جزوه · نمایش لاگ فعالیت (history) ← بازگشت به فهرست
📘 فصل اول · جلسه هفتم نمایش لاگ فعالیت (history)
📅 تاریخ: ۱۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی

▍ مقدمه

در لینوکس، هر دستوری که در ترمینال اجرا می‌کنید، در یک لیست به نام تاریخچه (History) ذخیره می‌شود. این قابلیت به شما کمک می‌کند تا دستورات قبلی را مرور، ویرایش و دوباره اجرا کنید بدون اینکه نیاز به تایپ مجدد داشته باشید. فرمان history ابزاری قدرتمند برای مدیریت این تاریخچه است.

📌 مفهوم اصلی:

history یک دستور built-in در Bash است که لیست دستورات اجرا شده را با شماره نمایش می‌دهد و امکان مدیریت آن‌ها را فراهم می‌کند. [citation:1][citation:6]

▍ نمایش تاریخچه

با اجرای ساده history، تمام دستورات اجرا شده در جلسه جاری به همراه شماره آن‌ها نمایش داده می‌شود. [citation:1]

📝 مثال:
$ history 1 ls
2 cd Documents/
3 pwd
4 echo "hello"
5 history

خروجی شامل شماره و خود دستور است. [citation:14]

• نمایش تعداد محدود

با دادن یک عدد به history، فقط تعداد مشخصی از آخرین دستورات نمایش داده می‌شود. [citation:1][citation:4]

$ history 5

فقط ۵ دستور آخر را نشان می‌دهد. [citation:9]

▍ اجرای مجدد دستورات

با استفاده از علامت ! و شماره تاریخچه، می‌توانید یک دستور را دوباره اجرا کنید. [citation:4][citation:9]

📝 مثال‌ها:
$ !3 # اجرای دستور شماره ۳ (pwd)
$ !! # اجرای آخرین دستور (تکرار قبلی)
$ sudo !! # اجرای آخرین دستور با sudo
$ !ls # اجرای آخرین دستوری که با ls شروع شده
💡 نکته:

برای جستجوی تعاملی در تاریخچه، کلید ترکیبی Ctrl + R را بزنید و شروع به تایپ کنید. Bash به صورت پویا مطابقت‌ها را نشان می‌دهد. [citation:11][citation:15]

▍ مخفی کردن دستورات از تاریخچه

اگر می‌خواهید یک دستور در تاریخچه ذخیره نشود، کافی است یک فاصله خالی قبل از آن قرار دهید. (این قابلیت باید با HISTCONTROL=ignorespace فعال باشد). [citation:9]

$ echo "این دستور ذخیره نمی‌شود"

با گذاشتن فاصله قبل از دستور، آن را از تاریخچه حذف می‌کند. [citation:6][citation:9]

▍ مسیر فایل تاریخچه

متغیر HISTFILE مسیر فایلی را نشان می‌دهد که تاریخچه در آن ذخیره می‌شود. [citation:3][citation:5]

$ echo $HISTFILE /home/user/.bash_history

معمولاً این فایل در دایرکتوری خانه کاربر قرار دارد. [citation:14]

📌 نکته:

می‌توانید با تغییر متغیر HISTFILE، مسیر فایل تاریخچه را تغییر دهید. [citation:3][citation:5]

▍ گزینه‌های (سوییچ‌های) فرمان history

فرمان history گزینه‌های مختلفی دارد که مدیریت تاریخچه را آسان‌تر می‌کنند. [citation:1][citation:3]

گزینه توضیح
-c پاک کردن کامل تاریخچه جلسه جاری. (تاریخچه موجود در فایل تا زمان خروج ذخیره نمی‌شود) [citation:1][citation:3][citation:6]
-d offset حذف یک دستور خاص با شماره مشخص. (مثلاً history -d 5 دستور شماره ۵ را حذف می‌کند) [citation:1][citation:3][citation:5]
-d start-end حذف یک بازه از دستورات از شماره start تا end. (مثلاً history -d 10-20) [citation:5][citation:8]
-a افزودن دستورات جدید جلسه جاری به فایل تاریخچه. (بدون اینکه منتظر بسته شدن جلسه باشد) [citation:1][citation:3][citation:14]
-n خواندن دستوراتی که تاکنون خوانده نشده‌اند از فایل تاریخچه و افزودن آن‌ها به لیست جاری. [citation:1][citation:3][citation:5]
-r خواندن کل فایل تاریخچه و افزودن آن به لیست جاری. [citation:1][citation:3][citation:14]
-w نوشتن تاریخچه جاری در فایل تاریخچه. (محتوای قبلی فایل بازنویسی می‌شود) [citation:1][citation:3][citation:14]
-p پیش‌نمایش نتیجه بسط تاریخچه بدون اجرا یا ذخیره‌سازی. (برای تست قبل از اجرا) [citation:3][citation:5][citation:14]
-s افزودن یک دستور به تاریخچه بدون اجرا کردن آن. (برای شبیه‌سازی یا پر کردن تاریخچه) [citation:3][citation:5][citation:14]

• مثال‌های کاربردی

📝 پاک کردن تاریخچه:
$ history -c

همه دستورات جلسه جاری را حذف می‌کند. [citation:1][citation:6]

📝 حذف یک دستور خاص:
$ history -d 10

دستور شماره ۱۰ را حذف می‌کند. [citation:3][citation:5]

📝 ذخیره تاریخچه در فایل:
$ history -w

تاریخچه جاری را در ~/.bash_history ذخیره می‌کند. [citation:1][citation:14]

📝 خواندن تاریخچه از فایل:
$ history -r

محتوای فایل تاریخچه را به جلسه جاری اضافه می‌کند. [citation:1][citation:3]

✅ خلاصه:
  • history → نمایش لیست دستورات با شماره
  • !number → اجرای دستور با شماره مشخص
  • history -c → پاک کردن تاریخچه جلسه جاری
  • history -d → حذف یک دستور خاص
  • history -w → ذخیره تاریخچه در فایل
  • history -r → خواندن تاریخچه از فایل
  • history -a → افزودن دستورات جدید به فایل
  • history -n → خواندن دستورات خوانده نشده از فایل
  • history -p → پیش‌نمایش بسط تاریخچه
  • history -s → افزودن دستور به تاریخچه بدون اجرا
✅ تمرین پیشنهادی:

۱. با history تاریخچه خود را مشاهده کنید.
۲. با !شماره یک دستور خاص را دوباره اجرا کنید.
۳. با گذاشتن فاصله قبل از یک دستور، آن را از تاریخچه مخفی کنید.
۴. با echo $HISTFILE مسیر فایل تاریخچه را ببینید.
۵. با history -c تاریخچه جلسه جاری را پاک کنید.
۶. با history -d 5 دستور شماره ۵ را حذف کنید.